Regarding to the chess and card games (e.g., Doudizhu, Mahjong, Bridge, Uno, Blackjack, etc.) played at electronic gaming terminals, it is important not only to attract the users with playing methods, but also use a good card dealing algorithm. A good card dealing algorithm can prevent the users from guessing the cards or giving up too soon for getting a good hand for too long.
Before a better card dealing algorithm is used, the more general practice is to adopt the strategy of dealing random cards to the users, i.e. it assigns all the cards to each player according to the randomized strategy. This random card dealing algorithm is quite simple, however, the distribution of cards into meaningful combinations can't be controlled. All players' cards may be randomly dispersed and the probability of getting a good hand is relatively small.
Another card dealing method used presently generates a fixed set of multiple good card configurations, then choose one good card configuration from the fixed set to assign to each player every time. In this way, it can control the appearance of good card combinations. However, it would be not easy to control the probability of having each special card configuration to occur. Also, the ability to control the good card and bad card combinations is poor. In addition, the ability to control the probability of particular card combinations is limited to a single round of the game, rather than a large number of rounds or games. Consequently, as time progresses, it is hard to ensure the same probability of occurrence over a large number of rounds and games. The more serious problem is that it is very difficult to make the current card dealing technology to dynamically configurable. The probability of occurrence for various card combinations must be generated in advance, and the card dealing algorithm can't be reconfigured easily. Therefore, each modification to the card dealing strategy needs to be performed on the backend server, resulting in a low efficiency.